package com.wbl.train.common.utils;

import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;

/**
 * Author: 王博纶
 * Date: 2024/1/24 16:47
 * FileName: SnowUtil
 * Description: 封装hutool的雪花算法
 */
public class SnowUtil {
    // 机器Id
    private static long workerId = 1;
    // 数据中心Id
    private static long datacenterId = 1;

    /**
     * 获取雪花Id
     * @return 返回一个long类型的雪花Id
     */
    public static long getSnowflakeNextId(){
        /*
         * 获取一个雪花算法的对象
         * workId：终端Id --- 可以使用redis的自增长序列
         * datacenterId：数据中心Id --- 可以使用redis的自增长序列
         */
        Snowflake snowflake = IdUtil.getSnowflake(1, 1);
        // 获取雪花算法的Id
        return snowflake.nextId();
    }

    /**
     * 获取雪花字符串
     * @return 返回一个String类型的雪花字符串
     */
    public static String getSnowflakeNextIdStr(){
        return IdUtil.getSnowflake(workerId,datacenterId).nextIdStr();
    }
}
